package src.CodeTop;

/**
 * 删除排序链表中的重复元素
 * 存在一个按升序排列的链表，给你这个链表的头节点 head ，请你删除所有重复的元素，使每个元素 只出现一次 。
 *
 * 返回同样按升序排列的结果链表。
 *
 *  
 *
 * 示例 1：
 *
 *
 * 输入：head = [1,1,2]
 * 输出：[1,2]
 * 示例 2：
 *
 *
 * 输入：head = [1,1,2,3,3]
 * 输出：[1,2,3]
 *
 */

public class _83RemoveDuplicatesFromSortedList {
    public static void main(String[] args) {
        int[] arr = {1, 1, 2};
        ListNode head = TestListNode.generateLinkedList(3, arr);
        ListNode target = deleteDuplicates(head);
        TestListNode.showLinkedList(target);
    }

    public static ListNode deleteDuplicates(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }
        // 定义遍历指针
        ListNode cur = head;
        // 遍历链表
        while (cur.next != null) {
            // 如果下一个数值与当前数值相同
            if (cur.val == cur.next.val) {
                // 跳过当前结点的下一个结点
                cur.next = cur.next.next;
            }else {
                // 如果不相同则移动指针
                cur = cur.next;
            }
        }
        return head;
    }
}
